package com.shrct.businessprocess.customerservice;

import com.shrct.businessprocess.customerservice.IHasServiceRecords;
import com.shrct.businessprocess.customerservice.RCRoutineServicePlan;
import com.shrct.businessprocess.customerservice.RCServiceRecord;
import com.shrct.businessprocess.customerservice.RCWorkItem;
import com.shrct.businessprocess.customerservice.RCWorkItemStatus;
import com.shrct.businessprocess.customerservice.impl.RCRoutineServiceWorkItemImpl;
import com.shrct.businessprocess.customerservice.proxy.RCRoutineServiceWorkItemProxy;
import com.shrct.businessprocess.organization.RCEmployee;
import edu.fudan.mylang.pf.EntityImplementation;
import java.util.Collection;
import java.util.Date;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;

@EntityImplementation(implementBy = RCRoutineServiceWorkItemImpl.class)
public interface RCRoutineServiceWorkItem extends RCWorkItem, IHasServiceRecords {
  public abstract RCRoutineServicePlan getPlan();
  
  public abstract RCRoutineServiceWorkItem setPlan(final RCRoutineServicePlan plan);
  
  public abstract Collection<RCEmployee> getWorkers();
  
  public abstract RCRoutineServiceWorkItem addtoWorkers(final RCEmployee rCEmployee);
  
  public abstract RCRoutineServiceWorkItem setWorkers(final Iterable<RCEmployee> workers);
  
  public abstract RCRoutineServiceWorkItem removeFromWorkers(final RCEmployee rCEmployee);
  
  public abstract RCRoutineServiceWorkItem removeAllWorkers();
  
  public abstract RCWorkItemStatus getStatus();
  
  public abstract RCRoutineServiceWorkItem setStatus(final RCWorkItemStatus status);
  
  public abstract Date getPlanDate();
  
  public abstract RCRoutineServiceWorkItem setPlanDate(final Date planDate);
  
  public abstract Date getAssignedDate();
  
  public abstract RCRoutineServiceWorkItem setAssignedDate(final Date assignedDate);
  
  public abstract Date getExecuteDate();
  
  public abstract RCRoutineServiceWorkItem setExecuteDate(final Date executeDate);
  
  public abstract Boolean getIsReported();
  
  public abstract RCRoutineServiceWorkItem setIsReported(final Boolean isReported);
  
  public abstract Date getReportSubmitDate();
  
  public abstract RCRoutineServiceWorkItem setReportSubmitDate(final Date reportSubmitDate);
  
  public abstract Date getFinishDate();
  
  public abstract RCRoutineServiceWorkItem setFinishDate(final Date finishDate);
  
  public abstract String getComment();
  
  public abstract RCRoutineServiceWorkItem setComment(final String comment);
  
  public abstract Collection<RCServiceRecord> getServiceRecords();
  
  public abstract RCRoutineServiceWorkItem addtoServiceRecords(final RCServiceRecord rCServiceRecord);
  
  public abstract RCRoutineServiceWorkItem setServiceRecords(final Iterable<RCServiceRecord> serviceRecords);
  
  public abstract RCRoutineServiceWorkItem removeFromServiceRecords(final RCServiceRecord rCServiceRecord);
  
  public abstract RCRoutineServiceWorkItem removeAllServiceRecords();
  
  public abstract void finished(final Procedure1<? super RCRoutineServiceWorkItem> preInit);
  
  public abstract void suspended();
  
  public abstract void doAddtoServiceRecords(final RCServiceRecord serviceRecord);
  
  public abstract RCRoutineServiceWorkItemProxy toProxy();
}
